//该文件用于创建vuex中最核心的store
import Vue from 'vue'

//引入vuex
import Vuex from 'vuex'
//使用vuex插件
Vue.use(Vuex)

//模块化写法
//把所属某个组件的配置项写在一块
// const countOptions1 = {
//     namespaced: true,
//     actions: {},
//     mutations: {},
//     getters: {},
//     state: {}
// }
// const countOptions2 = {
//     namespaced: true,
//     actions: {},
//     mutations: {},
//     getters: {},
//     state: {}
// }


//准备actions----用于响应组件中的动作
const actions = {
    /* 由于这个加法操作没有任何别的处理逻辑，因此不需要在此截胡，业务层可以直接走mutations里面的方法
        jia(context, value) {
            context.commit('JIA', value)
        },
    */
    jian(context, value) {
        if(context.state.sum > 1) { //业务逻辑和ajax请求都写在actions里面
            context.commit('JIAN', value)
        }
    }
}
//准备mutations----用于操作数据（state）
const mutations = {
    JIA(state,value) {
        state.sum += value
    },
    JIAN(state,value) {
        state.sum -= value
    }
}
//准备state----用于存储数据
const state = {
    sum:5 //当前求和
}

//准备getters----用于将state中的数据进行加工
const getters = {
    bigSums(state) {
        return state.sum*10
    }
}

//创建并暴露store
export default new Vuex.Store({
    actions,
    mutations,
    state,
    getters,

    //模块化配置
    // modules: {
    //     a: countOptions1,
    //     b: countOptions2,
    //     ...
    // }
})
